package com.xbongbong.saas.service;

import com.xbongbong.paas.pojo.dto.FormDataUpdateGetDTO;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.pro.fundfixdata.pojo.dto.FundFixDataDTO;
import com.xbongbong.pro.fundfixdata.pojo.vo.FundFixDataVO;
import com.xbongbong.pro.purchase.pojo.dto.PurchaseInvoiceRepairAmountDTO;
import com.xbongbong.saas.domain.entity.ext.ContractEntityExt;
import com.xbongbong.saas.domain.entity.ext.PaymentEntityExt;

/**
 * @author: 汪腾伟
 * @date: Created in 2021/7/6 10:08
 * @description： 资金修复数据Service层
 */
public interface FundFixDataService {

    /**
     * 资金修正数据的一个通用的方法
     *
     * @param fundFixDataDTO
     * @return
     */
    FundFixDataVO fixData(FundFixDataDTO fundFixDataDTO) throws XbbException;

    /**
     * 修复合同金额已收、未收、坏账金额，收款比例
     *
     * @param formDataUpdateGetDTO 传入参数
     * @param contractId 合同id
     * @param corpid 公司id
     * @param contract 合同实体
     * @throws XbbException
     */
    void fixContractAmount(FormDataUpdateGetDTO formDataUpdateGetDTO, Long contractId, String corpid, ContractEntityExt contract) throws XbbException;

    /**
     * 修复回款计划（应收款）的已收、未收、坏账金额，收款状态
     *
     * @param formDataUpdateGetDTO
     * @param paymentId 回款计划（应收款）id
     * @param corpid 公司id
     * @param payment 回款计划实体
     * @throws XbbException
     */
    void fixPaymentAmount(FormDataUpdateGetDTO formDataUpdateGetDTO, Long paymentId, String corpid, PaymentEntityExt payment) throws XbbException;

    /**
     * 修正采购合同/付款计划/付款单的开票金额、未开票金额
     *
     * @param purchaseInvoiceRepairAmountDTO
     * @return
     * @throws Exception
     */
    void repairPurchaseInvoiceAmount(PurchaseInvoiceRepairAmountDTO purchaseInvoiceRepairAmountDTO) throws XbbException;

    /**
     * 修正预收款余额
     * @param fundFixDataDTO
     * @return void
     * @throws XbbException
     * @return
     * @author zcp
     * @since v1.0
     * @version v1.0
     */
    String repairPrepaymentBalance(FundFixDataDTO fundFixDataDTO) throws XbbException;

    /**
     * 修正预付款余额
     * @param fundFixDataDTO
     * @return void
     * @throws XbbException
     * @return
     * @author zcp
     * @since v1.0
     * @version v1.0
     */
    String repairPrepayBalance(FundFixDataDTO fundFixDataDTO) throws XbbException;
}
